/**
 * @copyright Copyright (c) 2025 CSG Digital Grid Technology (Guangdong) Co., Ltd.
 * @author Chen Yongjie
 */
#ifndef TEST_CJSON_H
#define TEST_CJSON_H

// 基础值获取测试
void test_cJSON_GetStringValue_valid(void);
void test_cJSON_GetStringValue_invalid_type(void);
void test_cJSON_GetStringValue_null(void);
void test_cJSON_GetNumberValue_valid(void);
void test_cJSON_GetNumberValue_invalid_type(void);
void test_cJSON_GetNumberValue_null(void);

// 类型判断测试
void test_cJSON_IsType_functions(void);
void test_cJSON_IsType_null_input(void);

// 对象与数组操作测试
void test_cJSON_HasObjectItem(void);
void test_cJSON_GetObjectItem_invalid_type(void);
void test_cJSON_GetObjectItemCaseSensitive(void);
void test_cJSON_EmptyArrayObject(void);
void test_cJSON_Array_functions(void);
void test_cJSON_Array_functions_invalid_type(void);
void test_cJSON_GetArraySize_safety(void);
void test_cJSON_GetArraySize_nested(void);

// 构造函数测试
void test_cJSON_Create_functions(void);
void test_cJSON_CreateArrayHelpers(void);
void test_cJSON_CreateReference_types(void);
void test_cJSON_CreateStringReference_no_free_literal(void);

// 解析与打印测试
void test_cJSON_Parse_Print(void);
void test_cJSON_Parse_invalid(void);
void test_cJSON_ParseWithLength_non_null_terminated(void);
void test_cJSON_ParseWithOpts_return_parse_end(void);
void test_cJSON_Parse_with_comments_via_Minify(void);
void test_cJSON_Print_null_input(void);
void test_cJSON_PrintPreallocated_buffer_too_small(void);
void test_cJSON_CreateRaw_print(void);

// 修改与替换测试
void test_cJSON_AddItem_functions(void);
void test_cJSON_AddItem_null_inputs(void);
void test_cJSON_AddItemReference(void);
void test_cJSON_AddItemToObjectCS_constant_key(void);
void test_cJSON_ReplaceItem(void);
void test_cJSON_InsertItemInArray(void);
void test_cJSON_DetachDeleteArray(void);
void test_cJSON_DetachItemViaPointer(void);

// 比较与复制测试
void test_cJSON_Compare(void);
void test_cJSON_Compare_nested(void);
void test_cJSON_Compare_exact_types(void);
void test_cJSON_Compare_case_sensitive_object(void);
void test_cJSON_Compare_nan_inf_numbers(void);
void test_cJSON_Duplicate(void);
void test_cJSON_Duplicate_string_independence(void);
void test_cJSON_Duplicate_non_recursive(void);
void test_cJSON_CreateObjectReference_no_delete_referent(void);

// 工具函数测试
void test_cJSON_Minify(void);
void test_cJSON_Minify_edge_cases(void);
void test_cJSON_SetValuestring(void);
void test_cJSON_SetNumberHelper(void);
void test_cJSON_GetErrorPtr_on_parse_failure(void);
void test_cJSON_malloc_free_hooks(void);

// 宏与遍历测试
void test_cJSON_ArrayForEach_macro(void);
void test_cJSON_ArrayForEach_macro_robustness(void);

// 安全性与边缘测试
void test_cJSON_Delete_safety_on_invalid_chains(void);

#endif // TEST_CJSON_H